package org.example.studentmanager.dao;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.example.studentmanager.entity.CourseSelectionsStudent;
import org.example.studentmanager.entity.Score;
import org.example.studentmanager.entity.Student;
import org.springframework.stereotype.Repository;

import java.util.List;

@Mapper
@Repository
public interface StudentDao {
    List<Score> getScore(@Param("id") Integer id);

    List<CourseSelectionsStudent> getCourseSelectionsByStudentId(@Param("studentId") Integer studentId);

    Student getStudentById(@Param("userId") Integer userId);

    // 批量插入选课记录方法
    int batchInsertSelections(@Param("selections") List<CourseSelectionsStudent> selections);

    // 学生退课方法
    int dropCourse(@Param("studentId") Integer studentId, @Param("courseId") Integer courseId);
    // 根据课程 ID 查询课程名称
    String getCourseNameById(@Param("courseId") Integer courseId);

    /**
     * 根据学生 ID 查询选课信息，包含课程名称、课时和教师名
     * @param studentId 学生 ID
     * @return 选课信息列表
     */
    List<CourseSelectionsStudent> getCourseSelectionsWithDetails(@Param("studentId") Integer studentId);


    /**
     * 全新方法：根据学生 ID 查询选课信息
     * @param studentId 学生 ID
     * @return 选课信息列表
     */
    List<CourseSelectionsStudent> getNewCourseSelectionsByStudentId(@Param("studentId") Integer studentId);
}

